package model;

import java.util.HashMap;
import java.util.Map;

/**
 * 客户实体类
 */
public class Customer {
    private int customerId;
    private String customerName;
    
    // 动态属性存储
    private Map<Integer, String> attributeValues = new HashMap<>();
    
    // 属性高亮状态存储
    private Map<Integer, Boolean> highlightedAttributes = new HashMap<>();
    
    public Customer() {
    }
    
    public Customer(int customerId, String customerName) {
        this.customerId = customerId;
        this.customerName = customerName;
    }
    
    public int getCustomerId() {
        return customerId;
    }
    
    public void setCustomerId(int customerId) {
        this.customerId = customerId;
    }
    
    public String getCustomerName() {
        return customerName;
    }
    
    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }
    
    public Map<Integer, String> getAttributeValues() {
        return attributeValues;
    }
    
    public void setAttributeValues(Map<Integer, String> attributeValues) {
        this.attributeValues = attributeValues;
    }
    
    /**
     * 设置属性值
     * @param attributeId 属性ID
     * @param value 属性值
     */
    public void setAttributeValue(int attributeId, String value) {
        this.attributeValues.put(attributeId, value);
    }
    
    /**
     * 获取属性值
     * @param attributeId 属性ID
     * @return 属性值
     */
    public String getAttributeValue(int attributeId) {
        return this.attributeValues.get(attributeId);
    }
    
    /**
     * 判断是否包含某个属性值
     * @param attributeId 属性ID
     * @return 是否包含
     */
    public boolean hasAttribute(int attributeId) {
        return this.attributeValues.containsKey(attributeId);
    }
    
    /**
     * 删除属性值
     * @param attributeId 属性ID
     */
    public void removeAttributeValue(int attributeId) {
        this.attributeValues.remove(attributeId);
    }
    
    /**
     * 获取属性高亮状态
     * @return 属性高亮状态Map
     */
    public Map<Integer, Boolean> getHighlightedAttributes() {
        return highlightedAttributes;
    }
    
    /**
     * 设置属性高亮状态
     * @param highlightedAttributes 属性高亮状态Map
     */
    public void setHighlightedAttributes(Map<Integer, Boolean> highlightedAttributes) {
        this.highlightedAttributes = highlightedAttributes;
    }
    
    /**
     * 设置单个属性的高亮状态
     * @param attributeId 属性ID
     * @param isHighlighted 是否高亮
     */
    public void setAttributeHighlight(int attributeId, boolean isHighlighted) {
        this.highlightedAttributes.put(attributeId, isHighlighted);
    }
    
    /**
     * 获取单个属性的高亮状态
     * @param attributeId 属性ID
     * @return 是否高亮，如果属性不存在高亮状态则返回false
     */
    public boolean isAttributeHighlighted(int attributeId) {
        Boolean isHighlighted = this.highlightedAttributes.getOrDefault(attributeId, false);
        return isHighlighted;
    }
} 